<template>
    <li>
        <label>
            <input type="checkbox" :checked="todoObj.done" @change="handleCheck(todoObj.id)">
            <!-- 如下代码也能实现功能，但是不太推荐，因为有点违反原则，因为修改了props -->
            <!-- <input type="checkbox" v-model="todoObj.done"> -->
            <span>{{todoObj.title}}</span>
        </label>
        <button class="btn btn-danger" @click="deleteTodo(todoObj.id)">删除</button>
    </li>
</template>

<script>
export default {
    name: 'Item',
    // 声明接收todoObj对象
    props: {
        todoObj: {
            type: Object,
            required: true
        },
        checkTodo: {
            type: Function,
            required: true
        },
        removeTodo: {
            type: Function,
            required: true
        }
    },
    methods: {
        // 勾选/取消勾选
        handleCheck (id) {
            // 通知App组件将对应的todoObj的done属性取反
            this.checkTodo(id)
        },
        // 删除
        deleteTodo(id){
            // 通知App组件删除对应的todoObj
            if(confirm('确定删除吗？')){
                this.removeTodo(id)
            }
        }
    }
}
</script>

<style scoped>
    /*item*/
    li {
        list-style: none;
        height: 36px;
        line-height: 36px;
        padding: 0 5px;
        border-bottom: 1px solid #ddd;
    }
    li label {
        float: left;
        cursor: pointer;
    }
    li label li input {
        vertical-align: middle;
        margin-right: 6px;
        position: relative;
        top: -1px;
    }
    li button {
        float: right;
        display: none;
        margin-top: 3px;
    }
    li:before {
        content: initial;
    }
    li:last-child {
        border-bottom: none;
    }
    li:hover{
        background: #ddd;
    }
    li:hover button{
        display: block;
    }
</style>